#!/usr/bin/env bash

# 监测代码修改并自动重启服务

source ./common.sh

# 开始先执行一次部署，同时部署开发和测试两套环境
docker-compose -p zqc exec server ./restart.sh
docker-compose -p zqctest exec server ./restart.sh

# 启动检测，为了防止文件修改太过频繁导致部署任务堆积，先将监测到的文件变化写入到临时文件中
fswatch -e ".*" -i "\.go$" -r . >>.fswatch_modified 2>&1 &

# 空闲时每隔1s check一下是否有新的文件变化，部署过程中则不受影响，防止同时触发多个部署任务
while [[ true ]]
do
  if [[ `wc .fswatch_modified | awk {'print $1'}` -gt 0 ]]; then
    # 清空临时文件，表明已在处理中
    cat /dev/null >.fswatch_modified
    # 重新部署
    docker-compose -p zqc exec server ./restart.sh
    docker-compose -p zqctest exec server ./restart.sh
  fi

  sleep 1
done